Design Patterns for Reuse in Object Oriented